/*
 * SEGUNDA ENTREGA DEL PROYECTO DE BASES DE DATOS "BIBLIOTECA DIGITAL"
 * 
 * Integrantes:
 * Gamboa Edwin Ricardo Cód: 0926631 plan: 2711
 * Portilla Cortes Maria Cristina Cód: 0844113 plan: 3743 
 * Rosero Rosero Luis Alberto Cód: 0943740 plan:3743
 * 
 */
package controlador;
import java.util.*;
import accesoDatos.*;
import logica.*;

/**
 *
 * @author Gamboa Family
 */
public class ControladorMaterial {
    
    public void activarMaterial(String codigo){
        DaoMaterial daoMAterial = new DaoMaterial();
        daoMAterial.activarMaterial(codigo);
    }
    
    public void agregarArea(String codMat, String codArea){
        Material m = new Material();
        AreaConocimiento a = new AreaConocimiento();
        DaoMaterial daoMaterial = new DaoMaterial();
        DaoAreaConocimiento daoArea = new DaoAreaConocimiento();
        
        daoMaterial.guardarAreaAgregada(codArea, codMat);

        System.out.println("Se va a agregar un area de conocimiento a un material");

        m = daoMaterial.retornarMaterialPorCodigo(codMat);
        a = daoArea.retornarAreaPorCodigo(codArea);
        
        m.addArea(a);                                
    }
    
    public void agregarAutor (String codMat, String codAutor){
        Material m = new Material();
        Autor a = new Autor();
        DaoMaterial daoMaterial = new DaoMaterial();
        DaoAutor daoAutor = new DaoAutor();

        System.out.println("Se va a agregar un autor a un material");
        
        daoMaterial.guardarAutorAgregado(codAutor, codMat);

        m = daoMaterial.retornarMaterialPorCodigo(codMat);
        a = daoAutor.retornarAutorPorCodigo(codAutor);
        
        m.addAutor(a);                
    }
    
    public void agregarPalabra(String codMat, String codPal){
        Material m = new Material();
        PalabraClave p = new PalabraClave();
        DaoMaterial daoMaterial = new DaoMaterial();
        DaoPalabraClave daoPalabraClave = new DaoPalabraClave();

        System.out.println("Se va a agragra un palabra a un material");
        
        daoMaterial.guardarPalabraAgregada(codPal, codMat);

        m = daoMaterial.retornarMaterialPorCodigo(codMat);
        p = daoPalabraClave.retornarPalabraPorCodigo(codPal);
        
        m.addPalabra(p);                        
    }
    
    public Vector<Material> consultaGeneral(String entrada){
        DaoMaterial daoMaterial = new DaoMaterial();
        Vector <String>vectorEntrada = new Vector();
        
        StringTokenizer espacio  = new StringTokenizer(entrada);
        while(espacio.hasMoreTokens()){
            String aux = espacio.nextToken();
            vectorEntrada.addElement(aux); 
        }  
        return daoMaterial.consultaGeneral(vectorEntrada);
    }
    
    public Vector consultarMaterialesPorCodigo(String codigo){
        DaoMaterial daoMaterial = new DaoMaterial();
        return daoMaterial.consultarMaterialesPorCodigo(codigo);        
    }
    
    public Vector consultarMaterialPorTitulo(String titulo){
        DaoMaterial daoMaterial = new DaoMaterial();
        return daoMaterial.consultarMaterialPorTitulo(titulo);        
    }
    
    public Vector consultarTodosLosMateriales(){
        DaoMaterial daoMaterial = new DaoMaterial();
        return daoMaterial.consultarTodosLosMateriales();
    }    
    
    public void descativarMaterial(String codigo){
        DaoMaterial daoMAterial = new DaoMaterial();
        daoMAterial.desactivarMaterial(codigo);
    }
    
    public boolean esActivado(String codigo){
        DaoMaterial daoMaterial = new DaoMaterial();
        return daoMaterial.esActivado(codigo);
    }
    
    public Usuario establecerCatalogador(String cod_cat){
        DaoUsuario daoUsr = new DaoUsuario();
        return daoUsr.retornarUsuarioPorCodigo(cod_cat);
    }
    
    public TipoMaterial establecerTipo(String codigo_tip){
        DaoTipoMaterial daoTipo = new DaoTipoMaterial();
        return daoTipo.retornarTipoPorCodigo(codigo_tip);
    }
    
    public boolean existeCodigo(String codigo){
        DaoMaterial daoMAterial = new DaoMaterial();
        return daoMAterial.existeCodigo(codigo);        
    }
    
    public void insertarDocumento(String  codigo, String titulo_pri, String titulo_sec, 
            String fecha_creacion, String fecha_publicacion, String idioma, 
            String formato, String editorial, String descripcion, 
            String codigo_tip, String catalogador, String ruta, String tamano){
        
        Material m = new Material();
        DaoMaterial daoMaterial = new DaoMaterial();
        
        m.setCodigo(codigo);
        m.setTitulo_pri(titulo_pri);
        m.setTitulo_sec(titulo_sec);
        m.setFecha_creacion(fecha_creacion);
        m.setFecha_publicacion(fecha_publicacion);
        m.setIdioma(idioma);
        m.setFormato(formato);
        m.setEditorial(editorial);
        m.setDescripcion(descripcion);
        m.setTipo_mat(establecerTipo(codigo_tip));
        m.setCatalogador(establecerCatalogador(catalogador));
        m.setRuta(ruta);
        m.setEstado("0");
        m.setTamano(tamano);
        //Se llama al dao para guardar
        System.out.println("Se va a insertar un documento");
        
        daoMaterial.guardarMaterial(m);

        System.out.println("Se  insertó  un  nuevo programa en la BD");

        //por seguridad
        m=null;
        daoMaterial=null;
        
    }
    
    public Vector listarMisAutores(String cod_mat){
        DaoMaterial daoMaterial = new DaoMaterial();
        return daoMaterial.retornarAutores(cod_mat);
    }
    
    public Vector listarMisAreas(String cod_mat){
        DaoMaterial daoMaterial = new DaoMaterial();
        return daoMaterial.retornarAreas(cod_mat);
    }
    
    public Vector listarMisPalabras(String cod_mat){
        DaoMaterial daoMaterial = new DaoMaterial();
        return daoMaterial.retornarPalabras(cod_mat);
    }  
        
    public void modificarMaterial(int caso, String codigo, String valor){
        DaoMaterial daoMAterial = new DaoMaterial();
        daoMAterial.modificarMaterial(caso, codigo, valor);
    }             
    
    public void quitarAutor(String cod_mat, String cod_autor){
        DaoMaterial daoMaterial = new DaoMaterial();        
        daoMaterial.quitarAutor(cod_mat, cod_autor);
        System.out.println("Se va a quitar un auotor a un material");
    }
    
    public void quitarPalabra(String cod_mat, String cod_palabra){
        DaoMaterial daoMaterial = new DaoMaterial();        
        daoMaterial.quitarPalabra(cod_mat, cod_palabra);
        System.out.println("Se va a quitar una palabra a un material");
    }
    
    public void quitarArea(String cod_mat, String cod_area){
        DaoMaterial daoMaterial = new DaoMaterial();        
        daoMaterial.quitarArea(cod_mat, cod_area);
        System.out.println("Se va a quitar una area de conocimiento a un material");
    }
    
    public Material retornarMaterial (String cod){
        DaoMaterial daoMaterial = new DaoMaterial();
        return daoMaterial.retornarMaterialPorCodigo(cod);
    }
}
